[INFO] fetching crate ninmu-api 0.1.0...
[INFO] fixing ninmu-api-0.1.0 against try#622891a4e29178280638a6b63a8908bde2c0c854+cargoflags=-Zfix-edition=end=2015,2024 for pr-157817-2
[INFO] extracting crate ninmu-api 0.1.0 into /workspace/builds/worker-6-tc2/source
[INFO] started tweaking crates.io crate ninmu-api 0.1.0
[INFO] removed 0 missing tests
[INFO] finished tweaking crates.io crate ninmu-api 0.1.0
[INFO] tweaked toml for crates.io crate ninmu-api 0.1.0 written to /workspace/builds/worker-6-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate ninmu-api 0.1.0 on toolchain 622891a4e29178280638a6b63a8908bde2c0c854
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate ninmu-api 0.1.0 already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/source:/opt/rustwide/workdir:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-6-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:3a6becf2bc8dde7f3fa57ede90e4f284e72d296796fc446bbb1e2c7cc0530151" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 17d845232bfec3c7a6f1b4dd2d9f4861d6de7bc2b9c2d1d9c69c4d7fd39f33cf
[INFO] running `Command { std: "docker" "start" "17d845232bfec3c7a6f1b4dd2d9f4861d6de7bc2b9c2d1d9c69c4d7fd39f33cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "17d845232bfec3c7a6f1b4dd2d9f4861d6de7bc2b9c2d1d9c69c4d7fd39f33cf" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "17d845232bfec3c7a6f1b4dd2d9f4861d6de7bc2b9c2d1d9c69c4d7fd39f33cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=" "-e" "RUSTDOCFLAGS=" "-w" "/opt/rustwide/workdir" "--user" "0:0" "17d845232bfec3c7a6f1b4dd2d9f4861d6de7bc2b9c2d1d9c69c4d7fd39f33cf" "/opt/rustwide/cargo-home/bin/cargo" "+622891a4e29178280638a6b63a8908bde2c0c854" "fix" "--allow-no-vcs" "--allow-dirty" "--frozen" "--all" "--all-targets" "--message-format=json" "-Zfix-edition=end=2015,2024", kill_on_drop: false }`
[INFO] [stderr] crater-edition-check: migrating to next edition
[INFO] [stderr]    Migrating Cargo.toml from 2021 edition to 2024
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling rustls v0.23.39
[INFO] [stderr]    Compiling zerovec-derive v0.11.3
[INFO] [stderr]    Compiling tokio-macros v2.7.0
[INFO] [stderr]     Checking futures-util v0.3.32
[INFO] [stderr]    Compiling zerofrom-derive v0.1.7
[INFO] [stderr]    Compiling yoke-derive v0.8.2
[INFO] [stderr]     Checking serde v1.0.228
[INFO] [stderr]    Compiling zerocopy-derive v0.8.48
[INFO] [stderr]     Checking aho-corasick v1.1.4
[INFO] [stderr]     Checking digest v0.10.7
[INFO] [stderr]     Checking bitflags v2.11.1
[INFO] [stderr]     Checking sha2 v0.10.9
[INFO] [stderr]     Checking tokio v1.52.1
[INFO] [stderr]     Checking regex-automata v0.4.14
[INFO] [stderr]     Checking ninmu-telemetry v0.1.0
[INFO] [stderr]     Checking ninmu-plugins v0.1.0
[INFO] [stderr]     Checking serde_urlencoded v0.7.1
[INFO] [stderr]     Checking tinytemplate v1.2.1
[INFO] [stderr]     Checking zerofrom v0.1.7
[INFO] [stderr]     Checking yoke v0.8.2
[INFO] [stderr]     Checking zerovec v0.11.6
[INFO] [stderr]     Checking zerotrie v0.2.4
[INFO] [stderr]     Checking zerocopy v0.8.48
[INFO] [stderr]     Checking tinystr v0.8.3
[INFO] [stderr]     Checking potential_utf v0.1.5
[INFO] [stderr]     Checking icu_collections v2.2.0
[INFO] [stderr]     Checking icu_locale_core v2.2.0
[INFO] [stderr]     Checking regex v1.12.3
[INFO] [stderr]     Checking icu_provider v2.2.0
[INFO] [stderr]     Checking icu_normalizer v2.2.0
[INFO] [stderr]     Checking icu_properties v2.2.0
[INFO] [stderr]     Checking idna_adapter v1.2.1
[INFO] [stderr]     Checking idna v1.1.0
[INFO] [stderr]     Checking url v2.5.8
[INFO] [stderr]     Checking rustls-webpki v0.103.13
[INFO] [stderr]     Checking hyper v1.9.0
[INFO] [stderr]     Checking tower v0.5.3
[INFO] [stderr]     Checking ninmu-runtime v0.1.0
[INFO] [stderr]     Checking tower-http v0.6.8
[INFO] [stderr]     Checking hyper-util v0.1.20
[INFO] [stderr]     Checking tokio-rustls v0.26.4
[INFO] [stderr]     Checking half v2.7.1
[INFO] [stderr]     Checking hyper-rustls v0.27.9
[INFO] [stderr]     Checking ciborium-ll v0.2.2
[INFO] [stderr]     Checking reqwest v0.12.28
[INFO] [stderr]     Checking ciborium v0.2.2
[INFO] [stderr]     Checking criterion v0.5.1
[INFO] [stderr]     Checking ninmu-api v0.1.0 (/opt/rustwide/workdir)
[INFO] [stderr]    Migrating src/lib.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed src/prompt_cache.rs (6 fixes)
[INFO] [stderr]        Fixed src/client.rs (4 fixes)
[INFO] [stderr]        Fixed src/providers/mod.rs (4 fixes)
[INFO] [stderr]        Fixed src/providers/anthropic.rs (32 fixes)
[INFO] [stderr]        Fixed src/providers/openai_compat.rs (24 fixes)
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/providers/anthropic.rs:811:19
[INFO] [stdout]     |
[INFO] [stdout] 811 |             match self.response.chunk().await? {
[INFO] [stdout]     |                   ---------------------------^
[INFO] [stdout]     |                   |                     |
[INFO] [stdout]     |                   |                     this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                   |                     up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   |                     `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                   up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                   up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   `__awaitee` calls a custom destructor
[INFO] [stdout]     |                   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 812 |                 Some(chunk) => {
[INFO] [stdout]     |                      -----
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      `chunk` calls a custom destructor
[INFO] [stdout]     |                      `chunk` will be dropped later as of Edition 2024
[INFO] [stdout] 813 |                     self.pending.extend(self.parser.push(&chunk)?);
[INFO] [stdout]     |                                         -------------------------
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 819 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `chunk` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/providers/openai_compat.rs:575:19
[INFO] [stdout]     |
[INFO] [stdout] 575 |             match self.response.chunk().await? {
[INFO] [stdout]     |                   ---------------------------^
[INFO] [stdout]     |                   |                     |
[INFO] [stdout]     |                   |                     this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |                   |                     up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   |                     `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                   up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                   up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   `__awaitee` calls a custom destructor
[INFO] [stdout]     |                   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 576 |                 Some(chunk) => {
[INFO] [stdout]     |                      -----
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      `chunk` calls a custom destructor
[INFO] [stdout]     |                      `chunk` will be dropped later as of Edition 2024
[INFO] [stdout] 577 |                     for parsed in self.parser.push(&chunk)? {
[INFO] [stdout]     |                                   -------------------------
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                   `#2` will be dropped later as of Edition 2024
[INFO] [stdout] 578 |                         self.pending.extend(self.state.ingest_chunk(parsed)?);
[INFO] [stdout]     |                                             --------------------------------
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                             `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 585 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `chunk` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/client.rs:107:19
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let mut last_error = None;
[INFO] [stdout]     |             --------------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `last_error` calls a custom destructor
[INFO] [stdout]     |             `last_error` will be dropped later as of Edition 2024
[INFO] [stdout] 106 |         for model in std::iter::once(primary.to_string()).chain(fallbacks.iter().cloned()) {
[INFO] [stdout] 107 |             match Self::from_model(&model) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 113 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.32/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.32/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.1/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `last_error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `last_error` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/client.rs:339:15
[INFO] [stdout]     |
[INFO] [stdout] 325 |         let _lock = env_lock();
[INFO] [stdout]     |             -----
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `_lock` calls a custom destructor
[INFO] [stdout]     |             `_lock` will be dropped later as of Edition 2024
[INFO] [stdout] 326 |         let _dashscope = EnvVarGuard::set("DASHSCOPE_API_KEY", Some("test-dashscope-key"));
[INFO] [stdout]     |             ----------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `_dashscope` calls a custom destructor
[INFO] [stdout]     |             `_dashscope` will be dropped later as of Edition 2024
[INFO] [stdout] 327 |         let _openai = EnvVarGuard::set("OPENAI_API_KEY", None);
[INFO] [stdout]     |             -------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `_openai` calls a custom destructor
[INFO] [stdout]     |             `_openai` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 339 |         match client.unwrap() {
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^
[INFO] [stdout]     |               |
[INFO] [stdout]     |               this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |               up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 349 |     }
[INFO] [stdout]     |     - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.32/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.32/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.1/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `_lock` invokes this custom destructor
[INFO] [stdout]    --> /rustc/622891a4e29178280638a6b63a8908bde2c0c854/library/std/src/sync/poison/mutex.rs:741:0
[INFO] [stdout] note: `_dashscope` invokes this custom destructor
[INFO] [stdout]    --> src/client.rs:308:5
[INFO] [stdout]     |
[INFO] [stdout] 308 |     impl Drop for EnvVarGuard {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `_openai` invokes this custom destructor
[INFO] [stdout]    --> src/client.rs:308:5
[INFO] [stdout]     |
[INFO] [stdout] 308 |     impl Drop for EnvVarGuard {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/providers/anthropic.rs:811:19
[INFO] [stdout]     |
[INFO] [stdout] 811 |             match self.response.chunk().await? {
[INFO] [stdout]     |                   ---------------------------^
[INFO] [stdout]     |                   |                     |
[INFO] [stdout]     |                   |                     this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                   |                     up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   |                     `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                   up until Edition 2021 `#3` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                   up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   `__awaitee` calls a custom destructor
[INFO] [stdout]     |                   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 812 |                 Some(chunk) => {
[INFO] [stdout]     |                      -----
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      `chunk` calls a custom destructor
[INFO] [stdout]     |                      `chunk` will be dropped later as of Edition 2024
[INFO] [stdout] 813 |                     self.pending.extend(self.parser.push(&chunk)?);
[INFO] [stdout]     |                                         -------------------------
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                         `#2` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 819 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#4` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `chunk` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout]     = note: `--force-warn tail-expr-drop-order` implied by `--force-warn rust-2024-compatibility`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating tests/models_file_e2e.rs from 2021 edition to 2024
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/providers/openai_compat.rs:575:19
[INFO] [stdout]     |
[INFO] [stdout] 575 |             match self.response.chunk().await? {
[INFO] [stdout]     |                   ---------------------------^
[INFO] [stdout]     |                   |                     |
[INFO] [stdout]     |                   |                     this value will be stored in a temporary; let us call it `#6`
[INFO] [stdout]     |                   |                     up until Edition 2021 `#6` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   |                     this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   |                     `#1` will be dropped later as of Edition 2024
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#4`
[INFO] [stdout]     |                   up until Edition 2021 `#4` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#5`
[INFO] [stdout]     |                   up until Edition 2021 `#5` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout]     |                   `__awaitee` calls a custom destructor
[INFO] [stdout]     |                   `__awaitee` will be dropped later as of Edition 2024
[INFO] [stdout] 576 |                 Some(chunk) => {
[INFO] [stdout]     |                      -----
[INFO] [stdout]     |                      |
[INFO] [stdout]     |                      `chunk` calls a custom destructor
[INFO] [stdout]     |                      `chunk` will be dropped later as of Edition 2024
[INFO] [stdout] 577 |                     for parsed in self.parser.push(&chunk)? {
[INFO] [stdout]     |                                   -------------------------
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   this value will be stored in a temporary; let us call it `#2`
[INFO] [stdout]     |                                   `#2` will be dropped later as of Edition 2024
[INFO] [stdout] 578 |                         self.pending.extend(self.state.ingest_chunk(parsed)?);
[INFO] [stdout]     |                                             --------------------------------
[INFO] [stdout]     |                                             |
[INFO] [stdout]     |                                             this value will be stored in a temporary; let us call it `#3`
[INFO] [stdout]     |                                             `#3` will be dropped later as of Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 585 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout] note: `#4` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#5` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#5` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `chunk` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#2` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#2` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `#3` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#3` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: relative drop order changing in Rust 2024
[INFO] [stdout]    --> src/client.rs:107:19
[INFO] [stdout]     |
[INFO] [stdout] 105 |         let mut last_error = None;
[INFO] [stdout]     |             --------------
[INFO] [stdout]     |             |
[INFO] [stdout]     |             `last_error` calls a custom destructor
[INFO] [stdout]     |             `last_error` will be dropped later as of Edition 2024
[INFO] [stdout] 106 |         for model in std::iter::once(primary.to_string()).chain(fallbacks.iter().cloned()) {
[INFO] [stdout] 107 |             match Self::from_model(&model) {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this value will be stored in a temporary; let us call it `#1`
[INFO] [stdout]     |                   up until Edition 2021 `#1` is dropped last but will be dropped earlier in Edition 2024
[INFO] [stdout] ...
[INFO] [stdout] 113 |         }
[INFO] [stdout]     |         - now the temporary value is dropped here, before the local variables in the block or statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#1` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.32/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/futures-channel-0.3.32/src/oneshot.rs:387:1
[INFO] [stdout]     |
[INFO] [stdout] 387 | impl<T> Drop for Sender<T> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] note: `#1` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.52.1/src/sync/mpsc/chan.rs:225:1
[INFO] [stdout]     |
[INFO] [stdout] 225 | impl<T, S> Drop for Tx<T, S> {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: `last_error` may invoke a custom destructor because it contains a trait object
[INFO] [stdout] note: `last_error` invokes this custom destructor
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.11.1/src/bytes.rs:680:1
[INFO] [stdout]     |
[INFO] [stdout] 680 | impl Drop for Bytes {
[INFO] [stdout]     | ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: most of the time, changing drop order is harmless; inspect the `impl Drop`s for side effects like releasing locks or sending messages
[INFO] [stdout]     = warning: this changes meaning in Rust 2024
[INFO] [stdout]     = note: for more information, see <https://doc.rust-lang.org/edition-guide/rust-2024/temporary-tail-expr-scope.html>
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Migrating tests/client_integration.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed tests/client_integration.rs (6 fixes)
[INFO] [stderr]    Migrating tests/provider_http_integration.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed tests/provider_http_integration.rs (7 fixes)
[INFO] [stderr]    Migrating benches/request_building.rs from 2021 edition to 2024
[INFO] [stderr]    Migrating tests/provider_http_integration_phase2.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed tests/provider_http_integration_phase2.rs (6 fixes)
[INFO] [stderr]    Migrating tests/provider_client_integration.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed tests/provider_client_integration.rs (4 fixes)
[INFO] [stderr]    Migrating tests/openai_compat_integration.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed tests/openai_compat_integration.rs (3 fixes)
[INFO] [stderr]    Migrating tests/proxy_integration.rs from 2021 edition to 2024
[INFO] [stderr]        Fixed tests/proxy_integration.rs (4 fixes)
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 36.21s
[INFO] [stderr] crater-edition-check: ninmu-api v0.1.0 (/opt/rustwide/workdir) updating edition from 2021 to 2024
[INFO] [stderr]     Checking ninmu-api v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/client.rs:300:32
[INFO] [stdout]     |
[INFO] [stdout] 300 |                 Some(value) => unsafe { std::env::set_var(key, value) },
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-F unsafe-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/client.rs:302:25
[INFO] [stdout]     |
[INFO] [stdout] 302 |                 None => unsafe { std::env::remove_var(key) },
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/client.rs:312:32
[INFO] [stdout]     |
[INFO] [stdout] 312 |                 Some(value) => unsafe { std::env::set_var(self.key, value) },
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/client.rs:314:25
[INFO] [stdout]     |
[INFO] [stdout] 314 |                 None => unsafe { std::env::remove_var(self.key) },
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/prompt_cache.rs:600:9
[INFO] [stdout]     |
[INFO] [stdout] 600 |         unsafe { std::env::set_var("CLAUDE_CONFIG_HOME", &temp_root) };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/prompt_cache.rs:625:9
[INFO] [stdout]     |
[INFO] [stdout] 625 |         unsafe { std::env::remove_var("CLAUDE_CONFIG_HOME") };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/prompt_cache.rs:640:9
[INFO] [stdout]     |
[INFO] [stdout] 640 |         unsafe { std::env::set_var("CLAUDE_CONFIG_HOME", &temp_root) };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/prompt_cache.rs:652:9
[INFO] [stdout]     |
[INFO] [stdout] 652 |         unsafe { std::env::remove_var("CLAUDE_CONFIG_HOME") };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/prompt_cache.rs:667:9
[INFO] [stdout]     |
[INFO] [stdout] 667 |         unsafe { std::env::set_var("CLAUDE_CONFIG_HOME", &temp_root) };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/prompt_cache.rs:685:9
[INFO] [stdout]     |
[INFO] [stdout] 685 |         unsafe { std::env::remove_var("CLAUDE_CONFIG_HOME") };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1069:9
[INFO] [stdout]      |
[INFO] [stdout] 1069 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1071:9
[INFO] [stdout]      |
[INFO] [stdout] 1071 |         unsafe { std::env::remove_var("ANTHROPIC_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1073:9
[INFO] [stdout]      |
[INFO] [stdout] 1073 |         unsafe { std::env::remove_var("CLAW_CONFIG_HOME") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1085:9
[INFO] [stdout]      |
[INFO] [stdout] 1085 |         unsafe { std::env::set_var("ANTHROPIC_AUTH_TOKEN", "") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1087:9
[INFO] [stdout]      |
[INFO] [stdout] 1087 |         unsafe { std::env::remove_var("ANTHROPIC_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1094:9
[INFO] [stdout]      |
[INFO] [stdout] 1094 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1101:9
[INFO] [stdout]      |
[INFO] [stdout] 1101 |         unsafe { std::env::set_var("ANTHROPIC_AUTH_TOKEN", "auth-token") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1103:9
[INFO] [stdout]      |
[INFO] [stdout] 1103 |         unsafe { std::env::set_var("ANTHROPIC_API_KEY", "legacy-key") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1109:9
[INFO] [stdout]      |
[INFO] [stdout] 1109 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1111:9
[INFO] [stdout]      |
[INFO] [stdout] 1111 |         unsafe { std::env::remove_var("ANTHROPIC_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1118:9
[INFO] [stdout]      |
[INFO] [stdout] 1118 |         unsafe { std::env::set_var("ANTHROPIC_AUTH_TOKEN", "auth-token") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1121:9
[INFO] [stdout]      |
[INFO] [stdout] 1121 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1140:9
[INFO] [stdout]      |
[INFO] [stdout] 1140 |         unsafe { std::env::set_var("ANTHROPIC_AUTH_TOKEN", "auth-token") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1142:9
[INFO] [stdout]      |
[INFO] [stdout] 1142 |         unsafe { std::env::set_var("ANTHROPIC_API_KEY", "legacy-key") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1147:9
[INFO] [stdout]      |
[INFO] [stdout] 1147 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1149:9
[INFO] [stdout]      |
[INFO] [stdout] 1149 |         unsafe { std::env::remove_var("ANTHROPIC_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1157:9
[INFO] [stdout]      |
[INFO] [stdout] 1157 |         unsafe { std::env::set_var("CLAW_CONFIG_HOME", &config_home) };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1159:9
[INFO] [stdout]      |
[INFO] [stdout] 1159 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1161:9
[INFO] [stdout]      |
[INFO] [stdout] 1161 |         unsafe { std::env::remove_var("ANTHROPIC_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1175:9
[INFO] [stdout]      |
[INFO] [stdout] 1175 |         unsafe { std::env::remove_var("CLAW_CONFIG_HOME") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1200:9
[INFO] [stdout]      |
[INFO] [stdout] 1200 |         unsafe { std::env::set_var("CLAW_CONFIG_HOME", &config_home) };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1202:9
[INFO] [stdout]      |
[INFO] [stdout] 1202 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1204:9
[INFO] [stdout]      |
[INFO] [stdout] 1204 |         unsafe { std::env::remove_var("ANTHROPIC_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1227:9
[INFO] [stdout]      |
[INFO] [stdout] 1227 |         unsafe { std::env::remove_var("CLAW_CONFIG_HOME") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1236:9
[INFO] [stdout]      |
[INFO] [stdout] 1236 |         unsafe { std::env::set_var("CLAW_CONFIG_HOME", &config_home) };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1238:9
[INFO] [stdout]      |
[INFO] [stdout] 1238 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1240:9
[INFO] [stdout]      |
[INFO] [stdout] 1240 |         unsafe { std::env::remove_var("ANTHROPIC_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1255:9
[INFO] [stdout]      |
[INFO] [stdout] 1255 |         unsafe { std::env::remove_var("CLAW_CONFIG_HOME") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1264:9
[INFO] [stdout]      |
[INFO] [stdout] 1264 |         unsafe { std::env::set_var("CLAW_CONFIG_HOME", &config_home) };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1266:9
[INFO] [stdout]      |
[INFO] [stdout] 1266 |         unsafe { std::env::remove_var("ANTHROPIC_AUTH_TOKEN") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1268:9
[INFO] [stdout]      |
[INFO] [stdout] 1268 |         unsafe { std::env::remove_var("ANTHROPIC_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/anthropic.rs:1292:9
[INFO] [stdout]      |
[INFO] [stdout] 1292 |         unsafe { std::env::remove_var("CLAW_CONFIG_HOME") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:1880:9
[INFO] [stdout]      |
[INFO] [stdout] 1880 |         unsafe { std::env::remove_var("XAI_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2587:9
[INFO] [stdout]      |
[INFO] [stdout] 2587 |         unsafe { std::env::set_var("OPENAI_BASE_URL", "https://openrouter.ai/api/v1") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2589:9
[INFO] [stdout]      |
[INFO] [stdout] 2589 |         unsafe { std::env::remove_var("QWEN_BASE_URL") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2595:9
[INFO] [stdout]      |
[INFO] [stdout] 2595 |         unsafe { std::env::remove_var("OPENAI_BASE_URL") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2602:9
[INFO] [stdout]      |
[INFO] [stdout] 2602 |         unsafe { std::env::set_var("OPENAI_BASE_URL", "https://openrouter.ai/api/v1") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2604:9
[INFO] [stdout]      |
[INFO] [stdout] 2604 |         unsafe { std::env::set_var("QWEN_BASE_URL", "https://qwen.example.com/v1") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2610:9
[INFO] [stdout]      |
[INFO] [stdout] 2610 |         unsafe { std::env::remove_var("OPENAI_BASE_URL") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2612:9
[INFO] [stdout]      |
[INFO] [stdout] 2612 |         unsafe { std::env::remove_var("QWEN_BASE_URL") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2619:9
[INFO] [stdout]      |
[INFO] [stdout] 2619 |         unsafe { std::env::set_var("OPENAI_API_KEY", "sk-openai-test") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2621:9
[INFO] [stdout]      |
[INFO] [stdout] 2621 |         unsafe { std::env::remove_var("QWEN_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2627:9
[INFO] [stdout]      |
[INFO] [stdout] 2627 |         unsafe { std::env::remove_var("OPENAI_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2634:9
[INFO] [stdout]      |
[INFO] [stdout] 2634 |         unsafe { std::env::set_var("OPENAI_API_KEY", "sk-openai-test") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2636:9
[INFO] [stdout]      |
[INFO] [stdout] 2636 |         unsafe { std::env::set_var("QWEN_API_KEY", "sk-qwen-test") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2642:9
[INFO] [stdout]      |
[INFO] [stdout] 2642 |         unsafe { std::env::remove_var("OPENAI_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2644:9
[INFO] [stdout]      |
[INFO] [stdout] 2644 |         unsafe { std::env::remove_var("QWEN_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2651:9
[INFO] [stdout]      |
[INFO] [stdout] 2651 |         unsafe { std::env::remove_var("QWEN_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2653:9
[INFO] [stdout]      |
[INFO] [stdout] 2653 |         unsafe { std::env::remove_var("OPENAI_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2663:9
[INFO] [stdout]      |
[INFO] [stdout] 2663 |         unsafe { std::env::remove_var("OLLAMA_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2676:9
[INFO] [stdout]      |
[INFO] [stdout] 2676 |         unsafe { std::env::set_var("OLLAMA_API_KEY", "sk-ollama-cloud-test") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2685:9
[INFO] [stdout]      |
[INFO] [stdout] 2685 |         unsafe { std::env::remove_var("OLLAMA_API_KEY") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2721:9
[INFO] [stdout]      |
[INFO] [stdout] 2721 |         unsafe { std::env::remove_var("QWEN_BASE_URL") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2723:9
[INFO] [stdout]      |
[INFO] [stdout] 2723 |         unsafe { std::env::set_var("OPENAI_BASE_URL", "https://fallback.test/v1") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2729:9
[INFO] [stdout]      |
[INFO] [stdout] 2729 |         unsafe { std::env::remove_var("OPENAI_BASE_URL") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]     --> src/providers/openai_compat.rs:2736:9
[INFO] [stdout]      |
[INFO] [stdout] 2736 |         unsafe { std::env::remove_var("DEEPSEEK_BASE_URL") };
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `metadata_for_model`
[INFO] [stdout]    --> src/providers/mod.rs:746:9
[INFO] [stdout]     |
[INFO] [stdout] 746 |         metadata_for_model, model_token_limit, parse_dotenv, prefix_model_for_provider,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/providers/mod.rs:775:32
[INFO] [stdout]     |
[INFO] [stdout] 775 |                 Some(value) => unsafe { std::env::set_var(key, value) },
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/providers/mod.rs:777:25
[INFO] [stdout]     |
[INFO] [stdout] 777 |                 None => unsafe { std::env::remove_var(key) },
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/providers/mod.rs:787:32
[INFO] [stdout]     |
[INFO] [stdout] 787 |                 Some(value) => unsafe { std::env::set_var(self.key, value) },
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> src/providers/mod.rs:789:25
[INFO] [stdout]     |
[INFO] [stdout] 789 |                 None => unsafe { std::env::remove_var(self.key) },
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/client_integration.rs:327:5
[INFO] [stdout]     |
[INFO] [stdout] 327 |     unsafe { std::env::set_var("CLAUDE_CONFIG_HOME", &temp_root) };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-F unsafe-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/client_integration.rs:426:5
[INFO] [stdout]     |
[INFO] [stdout] 426 |     unsafe { std::env::remove_var("CLAUDE_CONFIG_HOME") };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/client_integration.rs:629:5
[INFO] [stdout]     |
[INFO] [stdout] 629 |     unsafe { std::env::set_var("CLAUDE_CONFIG_HOME", &temp_root) };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/client_integration.rs:667:5
[INFO] [stdout]     |
[INFO] [stdout] 667 |     unsafe { std::env::remove_var("CLAUDE_CONFIG_HOME") };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/client_integration.rs:683:5
[INFO] [stdout]     |
[INFO] [stdout] 683 |     unsafe { std::env::set_var("CLAUDE_CONFIG_HOME", &temp_root) };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/client_integration.rs:732:5
[INFO] [stdout]     |
[INFO] [stdout] 732 |     unsafe { std::env::remove_var("CLAUDE_CONFIG_HOME") };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration_phase2.rs:197:28
[INFO] [stdout]     |
[INFO] [stdout] 197 |             Some(value) => unsafe { std::env::set_var(key, value) },
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-F unsafe-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration_phase2.rs:199:21
[INFO] [stdout]     |
[INFO] [stdout] 199 |             None => unsafe { std::env::remove_var(key) },
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration_phase2.rs:209:28
[INFO] [stdout]     |
[INFO] [stdout] 209 |             Some(value) => unsafe { std::env::set_var(self.key, value) },
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration_phase2.rs:211:21
[INFO] [stdout]     |
[INFO] [stdout] 211 |             None => unsafe { std::env::remove_var(self.key) },
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration_phase2.rs:546:5
[INFO] [stdout]     |
[INFO] [stdout] 546 |     unsafe { std::env::set_var("VLLM_BASE_URL", server.base_url()) };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration_phase2.rs:656:5
[INFO] [stdout]     |
[INFO] [stdout] 656 |     unsafe { std::env::set_var("DASHSCOPE_BASE_URL", server.base_url()) };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]   --> tests/proxy_integration.rs:23:28
[INFO] [stdout]    |
[INFO] [stdout] 23 |             Some(value) => unsafe { std::env::set_var(key, value) },
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: requested on the command line with `-F unsafe-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]   --> tests/proxy_integration.rs:25:21
[INFO] [stdout]    |
[INFO] [stdout] 25 |             None => unsafe { std::env::remove_var(key) },
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]   --> tests/proxy_integration.rs:35:28
[INFO] [stdout]    |
[INFO] [stdout] 35 |             Some(value) => unsafe { std::env::set_var(self.key, value) },
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]   --> tests/proxy_integration.rs:37:21
[INFO] [stdout]    |
[INFO] [stdout] 37 |             None => unsafe { std::env::remove_var(self.key) },
[INFO] [stdout]    |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ninmu-api` (test "proxy_integration") due to 4 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/openai_compat_integration.rs:700:9
[INFO] [stdout]     |
[INFO] [stdout] 700 |         unsafe { std::env::set_var(key, value) };
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-F unsafe-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/openai_compat_integration.rs:709:28
[INFO] [stdout]     |
[INFO] [stdout] 709 |             Some(value) => unsafe { std::env::set_var(self.key, value) },
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/openai_compat_integration.rs:711:21
[INFO] [stdout]     |
[INFO] [stdout] 711 |             None => unsafe { std::env::remove_var(self.key) },
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ninmu-api` (lib test) due to 70 previous errors; 1 warning emitted
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration.rs:196:28
[INFO] [stdout]     |
[INFO] [stdout] 196 |             Some(value) => unsafe { std::env::set_var(key, value) },
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-F unsafe-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration.rs:198:21
[INFO] [stdout]     |
[INFO] [stdout] 198 |             None => unsafe { std::env::remove_var(key) },
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration.rs:208:28
[INFO] [stdout]     |
[INFO] [stdout] 208 |             Some(value) => unsafe { std::env::set_var(self.key, value) },
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration.rs:210:21
[INFO] [stdout]     |
[INFO] [stdout] 210 |             None => unsafe { std::env::remove_var(self.key) },
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration.rs:412:5
[INFO] [stdout]     |
[INFO] [stdout] 412 |     unsafe { std::env::set_var("OPENAI_BASE_URL", server.base_url()) };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration.rs:583:5
[INFO] [stdout]     |
[INFO] [stdout] 583 |     unsafe { std::env::set_var("OLLAMA_BASE_URL", server.base_url()) };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_http_integration.rs:661:5
[INFO] [stdout]     |
[INFO] [stdout] 661 |     unsafe { std::env::set_var("OPENAI_BASE_URL", server.base_url()) };
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_client_integration.rs:148:28
[INFO] [stdout]     |
[INFO] [stdout] 148 |             Some(value) => unsafe { std::env::set_var(key, value) },
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: requested on the command line with `-F unsafe-code`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_client_integration.rs:150:21
[INFO] [stdout]     |
[INFO] [stdout] 150 |             None => unsafe { std::env::remove_var(key) },
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_client_integration.rs:160:28
[INFO] [stdout]     |
[INFO] [stdout] 160 |             Some(value) => unsafe { std::env::set_var(self.key, value) },
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: usage of an `unsafe` block
[INFO] [stdout]    --> tests/provider_client_integration.rs:162:21
[INFO] [stdout]     |
[INFO] [stdout] 162 |             None => unsafe { std::env::remove_var(self.key) },
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `ninmu-api` (test "provider_http_integration_phase2") due to 6 previous errors
[INFO] [stderr] error: could not compile `ninmu-api` (test "provider_client_integration") due to 4 previous errors
[INFO] [stderr] error: could not compile `ninmu-api` (test "openai_compat_integration") due to 3 previous errors
[INFO] [stderr] error: could not compile `ninmu-api` (test "client_integration") due to 6 previous errors
[INFO] [stderr] error: could not compile `ninmu-api` (test "provider_http_integration") due to 7 previous errors
[INFO] running `Command { std: "docker" "inspect" "17d845232bfec3c7a6f1b4dd2d9f4861d6de7bc2b9c2d1d9c69c4d7fd39f33cf", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "17d845232bfec3c7a6f1b4dd2d9f4861d6de7bc2b9c2d1d9c69c4d7fd39f33cf", kill_on_drop: false }`
[INFO] [stdout] 17d845232bfec3c7a6f1b4dd2d9f4861d6de7bc2b9c2d1d9c69c4d7fd39f33cf
